package com.apanal.qlife.sys.dao;

import java.util.List;
import java.util.Set;

import org.apache.ibatis.annotations.Param;

import com.apanal.qlife.common.page.Page;
import com.apanal.qlife.sys.model.Role;

/**
 * 角色数据持久层接口
 * 
 * 
 * @author shuliangxing
 * 
 * @date 2015-11-2下午5:07:19
 */
public interface RoleMapper {

	/**
	 * 根据id删除
	 * 
	 * @param rolId
	 * @return
	 */
	int deleteByPrimaryKey(Long rolId);

	/**
	 * 新增
	 * 
	 * @param record
	 * @return
	 */
	int insert(Role record);

	/**
	 * 非空字段新增
	 * 
	 * @param record
	 * @return
	 */
	int insertSelective(Role record);

	/**
	 * 根据id查询
	 * 
	 * @param rolId
	 * @return
	 */
	Role selectByPrimaryKey(Long rolId);

	/**
	 * 根据id更新非空字段
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(Role record);

	/**
	 * 根据id更新
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKey(Role record);

	/* 分割线 */

	/**
	 * 根据条件查询
	 * 
	 * @return
	 */
	List<Role> select(Role role);

	/**
	 * 查询相关信息
	 * 
	 * @param id
	 * @return
	 */
	List<Role> selectRelation(Role record);

	/**
	 * 分页查询相关信息
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	List<Role> selectRelationForPage(@Param(value = "e") Role entity,
			@Param(value = "p") Page page);

	/**
	 * 查询总记录数
	 * 
	 * @param entity
	 * @param page
	 * @return
	 */
	int selectRelationForPageCount(@Param(value = "e") Role entity,
			@Param(value = "p") Page page);

	/**
	 * 根据用户id查询角色集合
	 * 
	 * @param userId
	 * @return
	 */
	List<Role> selectByUserId(Long useId);

	/**
	 * 根据用户名查询角色名称集合
	 * 
	 * @param username
	 * @return
	 */
	Set<String> findNamesByUserName(String useName);

	/**
	 * 根据群组id查询角色集合
	 * 
	 * @param groId
	 * @return
	 */
	List<Role> selectByGroId(Long groId);

	Role findRoleNameByid(Long useId);
}